var i = 0
do {
  i = i + 2
  var done = 'done'
  console.log('do while', i)
} while (i < 10)
var k = 0
while (k < 10) {
  k = k + 2
  var while1 = 'while'
  console.log('while', k)
}

if (true) {
  var iF = 'if'
}
try {
  console.log('iF', iF) // 访问到了
  console.log('done', done) // 访问到了
  console.log('while', while1) // 访问到了
} catch (e) {
  console.log(e)
}
var obj = {
  name: 'can',
  age: '26',
  run: function () {
    console.log('qqq')
  }
}
for (var key in obj) {
  console.log(obj[key])
}
for (x in null) {
  console.log(x)
}
for (x in undefined) {
  console.log(x)
}
// label语句经常在嵌套循环中使用，目的是跳出外层循环，如果不添加标记，
// 只能跳出内层循环，外层循环还在继续
starts:
for (var i = 0; i < 10; i++) {
  for (var j = 0; j < 10; j++) {
    if (i == 5 && j == 5) {
      break starts
    } else {
      console.log(i + '+' + j + '=' + (i + j))
    }
  }
}
// switch语句 两种用法
var num1 = 10
switch (num1) {
  case 5:
    console.log(5)
    break;
  case 10:
    console.log(10) // 此处输出10
    break
  default:
    console.log('没有匹配数字')
    break;
}
switch (true) {
  case num1 < 5:
    console.log('num1为小于5的数')
    break;
  case num1 < 15 && num1 > 5:
      console.log('num1为小于15且大于5的数') // 此处输出 num1为小于15且大于5的数
      break;
  default:
    console.log('未找到匹配范围')
    break;
}
// 看一下for循环中的
for (var i = 0; i < forArray.length; i++) {
  if (forArray[i] === 4) {
    continue 
  }
  console.log(forArray[i]) // 123567  没打印出4
}

for (var i = 0; i < forArray.length; i++) {
  if (forArray[i] === 4) {
    break 
  }
  console.log(forArray[i]) // 123 其余的都没打印出来
}

// for循环中用return 直接报错 try都捕获不了 注释掉了
// try {
//     for (var i = 0; i < forArray.length; i++) {
//       if (forArray[i] === 4) {
//         return // Illegal return statement
//       }
//       console.log(forArray[i])
//     }
// } catch (e) {
//   console.log(e)
}